package main

import (
	"flag"
	"fmt"
	"log"
	"shop/common/config"
	"shop/common/inits"
	"shop/common/untils"
)

// ES数据同步工具
// 功能: 手动触发MySQL数据库中的商品数据同步到Elasticsearch
// 使用方式: go run es_sync.go
// 可选参数:
//   -full: 执行全量同步（默认）
//   -test: 仅测试连接，不执行实际同步
func main() {
	// 解析命令行参数
	fullSync := flag.Bool("full", true, "执行全量同步")
	testOnly := flag.Bool("test", false, "仅测试连接，不执行实际同步")
	flag.Parse()

	// 初始化配置
	config.Init()

	// 初始化MySQL
	inits.InitMysql()

	// 初始化ES客户端
	inits.InitElasticsearch()

	if *testOnly {
		// 仅测试连接
		log.Println("连接测试成功！MySQL和Elasticsearch服务均可用。")
		return
	}

	if *fullSync {
		// 执行全量同步
		log.Println("开始执行全量数据同步...")
		if err := untils.SyncGoodsToES(); err != nil {
			log.Fatalf("数据同步失败: %v", err)
		}
		log.Println("数据同步完成！MySQL中的商品数据已成功同步到Elasticsearch。")
	}

	// 打印使用帮助信息
	fmt.Println("\nES数据同步工具使用说明：")
	fmt.Println("  go run es_sync.go       - 执行全量数据同步（默认）")
	fmt.Println("  go run es_sync.go -test - 仅测试连接，不执行实际同步")
}